Refactor MergeHistory to subclass SpecialPage. Ohai unloved code :)
authorChad Horohoe <demon@users.mediawiki.org>
Thu, 18 Mar 2010 16:41:53 +0000 (16:41 +0000)
committerChad Horohoe <demon@users.mediawiki.org>
Thu, 18 Mar 2010 16:41:53 +0000 (16:41 +0000)
includes/AutoLoader.php
includes/SpecialPage.php
includes/specials/SpecialMergeHistory.php

index 4f5a9c1..01b0d93 100644 (file)
@@ -560,6 +560,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialExport' => 'includes/specials/SpecialExport.php',
        'SpecialImport' => 'includes/specials/SpecialImport.php',
        'SpecialListGroupRights' => 'includes/specials/SpecialListgrouprights.php',
+       'SpecialMergeHistory' => 'includes/specials/SpecialMergeHistory.php',
        'SpecialMostlinkedtemplates' => 'includes/specials/SpecialMostlinkedtemplates.php',
        'SpecialPreferences' => 'includes/specials/SpecialPreferences.php',
        'SpecialPrefixindex' => 'includes/specials/SpecialPrefixindex.php',
index 670d439..9176444 100644 (file)
@@ -168,7 +168,7 @@ class SpecialPage {
                'Import'                    => 'SpecialImport',
                'Undelete'                  => array( 'SpecialPage', 'Undelete', 'deletedhistory' ),
                'Whatlinkshere'             => 'SpecialWhatlinkshere',
-               'MergeHistory'              => array( 'SpecialPage', 'MergeHistory', 'mergehistory' ),
+               'MergeHistory'              => 'SpecialMergeHistory',
 
                # Other
                'Booksources'               => 'SpecialBookSources',
index 1b4ef30..e2ed38c 100644 (file)
@@ -3,32 +3,18 @@
  * Special page allowing users with the appropriate permissions to
  * merge article histories, with some restrictions
  *
- * @file
  * @ingroup SpecialPage
  */
-
-/**
- * Constructor
- */
-function wfSpecialMergehistory( $par ) {
-       global $wgRequest;
-
-       $form = new MergehistoryForm( $wgRequest, $par );
-       $form->execute();
-}
-
-/**
- * The HTML form for Special:MergeHistory, which allows users with the appropriate
- * permissions to view and restore deleted content.
- * @ingroup SpecialPage
- */
-class MergehistoryForm {
+class SpecialMergeHistory extends SpecialPage {
        var $mAction, $mTarget, $mDest, $mTimestamp, $mTargetID, $mDestID, $mComment;
        var $mTargetObj, $mDestObj;
 
-       function MergehistoryForm( $request, $par = "" ) {
-               global $wgUser;
+       public function __construct() {
+               parent::__construct( 'MergeHistory', 'mergehistory' );
+       }
 
+       private function loadRequestParams( $request ) {
+               global $wgUser;
                $this->mAction = $request->getVal( 'action' );
                $this->mTarget = $request->getVal( 'target' );
                $this->mDest = $request->getVal( 'dest' );
@@ -51,7 +37,6 @@ class MergehistoryForm {
                        $this->mTargetObj = null;
                        $this->mDestObj = null;
                }
-
                $this->preCacheMessages();
        }
 
@@ -66,8 +51,15 @@ class MergehistoryForm {
                }
        }
 
-       function execute() {
-               global $wgOut;
+       function execute( $par = '' ) {
+               global $wgOut, $wgRequest, $wgUser;
+
+               if( !$wgUser->isAllowed( 'mergehistory' ) ) {
+                       $wgOut->permissionRequired( 'mergehistory' );
+                       return;
+               }
+
+               $this->loadRequestParams( $wgRequest );
 
                $wgOut->setPagetitle( wfMsgHtml( "mergehistory" ) );
 
@@ -122,8 +114,7 @@ class MergehistoryForm {
                        '<fieldset>' .
                        Xml::element( 'legend', array(),
                                wfMsg( 'mergehistory-box' ) ) .
-                       Xml::hidden( 'title',
-                               SpecialPage::getTitleFor( 'Mergehistory' )->getPrefixedDbKey() ) .
+                       Xml::hidden( 'title', $this->getTitle()->getPrefixedDbKey() ) .
                        Xml::hidden( 'submitted', '1' ) .
                        Xml::hidden( 'mergepoint', $this->mTimestamp ) .
                        Xml::openElement( 'table' ) .
@@ -154,7 +145,7 @@ class MergehistoryForm {
                $revisions = new MergeHistoryPager( $this, array(), $this->mTargetObj, $this->mDestObj );
                $haveRevisions = $revisions && $revisions->getNumRows() > 0;
 
-               $titleObj = SpecialPage::getTitleFor( "Mergehistory" );
+               $titleObj = $this->getTitle();
                $action = $titleObj->getLocalURL( array( 'action' => 'submit' ) );
                # Start the form here
                $top = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $action, 'id' => 'merge' ) );